package com.mkx.samples;

import com.mkx.behaviorals.command.*;

/**
 * 命令模式演示类
 * 演示如何使用命令模式将请求封装为对象
 */
public class CommandDemo {
    public static void main(String[] args) {
        System.out.println("===== 命令模式演示 =====");
        
        // 创建接收者
        Receiver receiver = new Receiver();
        
        // 创建命令
        Command commandA = new ConcreteCommandA(receiver);
        Command commandB = new ConcreteCommandB(receiver);
        
        // 创建调用者
        Invoker invoker = new Invoker();
        
        // 设置命令并执行
        System.out.println("执行命令A：");
        invoker.setCommand(commandA);
        invoker.executeCommand();
        
        System.out.println("执行命令B：");
        invoker.setCommand(commandB);
        invoker.executeCommand();
        
        // 命令模式的优势：将请求发送者和接收者解耦
        System.out.println("命令模式演示完成\n");
    }
}